//作用: 统一负责 操作数据库表的 一个帮助类
import cloud from '@hw-agconnect/cloud';
import schema from '../../resources/rawfile/schema.json';
import { Database } from '@hw-agconnect/cloud/src/main/ets/database/Database';

// 导入相关数据库表的所有对象实例
  //为方便下面操作表 提供便利
import { qtype } from '../models/qtype';
import { chaplist } from '../models/chaplist';
import { chapqa } from '../models/chapqa';
import { chaplog } from '../models/chaplog';
import { chapqalog } from '../models/chapqalog';
import { userHeadImg } from '../models/userHeadImg';

//1. 初始化数据库 - entryability -- ok

//2. 定义相关的数据操作方法
class DatabaseHelper {

  //2.1 初始化database                  //schema 权限配置 当你操作某表时,获取它是否拥有对应权限
  static database: Database = cloud.database({ objectTypeInfo: schema ,zoneName: 'hmqaZone'})


  //  2.1 定义查询qtype的方法,查询出所有数据
  static async QType_Query():Promise<qtype[]> {
    return await DatabaseHelper.database.collection(qtype)
      .query()
      .get()
  }

  //2. 根据题库分类id获取其下面的所有章节数据，并且按照order进行升序排列
  static async ChapList_Query(qtypeid:number):Promise<chaplist[]> {
    return await DatabaseHelper.database.collection(chaplist).query().equalTo("qid",qtypeid).orderByAsc('order').get();

  }

  //3. 根据章节id获取其下的所有题目数据，按照order字段正序排列
  static async QuizList_Query(cid:number):Promise<chapqa[]> {
    return await DatabaseHelper.database.collection(chapqa).query()
      .equalTo("cid",cid).orderByAsc('order').get();
  }

  //4.1 查询当前用户的做题答案
  // cqaid:考题id，uid：当前登录用户id -> 获取当前用户当前题目的答题数据
  static async ChapQALog_Query_User_Select_Answer(cqaid:number,uid:string):Promise<chapqalog[]>{
    return await DatabaseHelper.database.collection(chapqalog).query()
      .equalTo("cqaid",cqaid)
      .and()
      .equalTo('uid',uid)
      .get()
  }

  //4. 新增或者更新章节题目做题答案
  static async ChapQALog_Upsert(objarr:chapqalog[]):Promise<number> {
    return await DatabaseHelper.database.collection(chapqalog).upsert(objarr);
  }
}

//导出供外部import使用
export default DatabaseHelper